/*
 * @Author: 无聊 7989314+Hwz1997@user.noreply.gitee.com
 * @Date: 2025-06-24 08:53:27
 * @LastEditors: 无聊 7989314+Hwz1997@user.noreply.gitee.com
 * @LastEditTime: 2025-10-23 09:45:20
 * @FilePath: \keep_motion_manger\src\request\index.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import axios from 'axios';
import {ElMessage} from 'element-plus';

const baseURL = import.meta.env.VITE_BASE_URL;

export const instance = axios.create({
  baseURL: baseURL, // 替换为你的后端服务器地址
  timeout: 5000, // 请求超时时间
  headers: { 'Content-Type': 'application/json' } // 设置请求头
});

instance.interceptors.request.use(
  config => {
    // 在发送请求之前做些什么
    if(config.method === 'get'){
      config.url = config.url + '?time='+ new Date().getTime();
    }
    config.headers.Authorization = sessionStorage.getItem("role") + ' ' + sessionStorage.getItem('token'); // 假设你的token存储在sessionStorage中
    return config;
  },
  error => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 响应拦截器
instance.interceptors.response.use(
  response => {
    const {status, data} = response; // 解构响应对象的status和data属性
    if(status > 203) return Promise.reject(data.message || '请求失败');
    if (response.config.responseType === 'blob') {
      return response; // 直接返回响应，不做额外处理
    }
    return data; // 返回响应数据的data部分
  },
  error => {
    // 对响应错误做点什么
    const {status, response: {data}} = error; 
    if(status === 403){
      ElMessage.error('登录过期，请重新登录');
      window.location.href = '/login';
      return Promise.reject(data.message || '登录过期，请重新登录');
    }
    const message = JSON.parse(data.data).message || '请求失败';
    const reason = JSON.parse(data.data).error || '请求失败';
    ElMessage.error(`${message},原因：${reason}`);
    return Promise.reject(error);
  }
);
